package com.witmore.ftp.web.config;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

import java.util.List;

/**
 * FTP服务器配置属性
 */
@Data
@Component
@ConfigurationProperties(prefix = "ftp")
public class FtpProperties {

    /**
     * 服务器配置
     */
    private Server server = new Server();

    /**
     * 用户配置
     */
    private List<User> users;

    @Data
    public static class Server {
        /**
         * FTP服务器端口
         */
        private int port = 21;

        /**
         * 被动模式端口范围
         */
        private String passivePorts = "20000-20010";

        /**
         * 最大连接数
         */
        private int maxConnections = 5;

        /**
         * 超时时间（毫秒）
         */
        private int timeout = 300000;

        /**
         * FTP根目录
         */
        private String rootDirectory = "./ftp-root";

        /**
         * 是否启用匿名访问
         */
        private boolean anonymousEnabled = false;

        /**
         * 被动模式外部地址（用于阿里云等云服务器部署）
         */
        private String passiveExternalAddress;
    }

    @Data
    public static class User {
        /**
         * 用户名
         */
        private String username;

        /**
         * 密码
         */
        private String password;

        /**
         * 用户主目录
         */
        private String homeDirectory;

        /**
         * 是否启用
         */
        private boolean enabled = true;

        /**
         * 是否有写权限
         */
        private boolean writePermission = true;

        /**
         * 最大连接数
         */
        private int maxConnections = 5;

        /**
         * 每个IP最大连接数
         */
        private int maxConnectionsPerIp = 2;
    }
}
